package fr.nantes.univ.BackEnd;

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import fr.nantes.univ.DAO.RubbishCollectionDAO;
import fr.nantes.univ.EntityBeans.RubbishCollection;

@SuppressWarnings("serial")
public class RubbishCollectionServlet extends HttpServlet {
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		
		String link = "http://data.nantes.fr/api/publication/JOURS_COLLECTE_DECHETS_VDN/JOURS_COLLECTE_DECHETS_VDN_STBL/content?format=xml";
		
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

		InputSource is = new InputSource(link);
		is.setEncoding("ISO-8859-1");
		
		DocumentBuilder db = null;
		try {
			db = dbf.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		Document dom = null;
		try {
			dom = db.parse(is);
		} catch (SAXException e) {
			e.printStackTrace();
		}
		
		Element docEle = dom.getDocumentElement();
		NodeList nl = docEle.getElementsByTagName("element");
		
		RubbishCollectionDAO.deleteAll();
		
		if(nl != null && nl.getLength() > 0) {
			for(int i = 0; i < nl.getLength(); i++) {
				Element el = (Element) nl.item(i);
				
				String bleuJourCollecte = el.getElementsByTagName("BLEU_JOUR_COLLECTE")
						.item(0).getFirstChild().getNodeValue();
				
				String motDirecteur = el.getElementsByTagName("MOT_DIRECTEUR")
						.item(0).getFirstChild().getNodeValue();
				
				String quartier = el.getElementsByTagName("QUARTIER")
						.item(0).getFirstChild().getNodeValue();
				
				String obsJourCollecte = el.getElementsByTagName("OBS_JOUR_COLLECTE")
						.item(0).getFirstChild().getNodeValue();
				
				String statut = el.getElementsByTagName("STATUT")
						.item(0).getFirstChild().getNodeValue();
				
				String jauneJourCollecte = el.getElementsByTagName("JAUNE_JOUR_COLLECTE")
						.item(0).getFirstChild().getNodeValue();
				
				String obsQuartier = el.getElementsByTagName("OBS_QUARTIER")
						.item(0).getFirstChild().getNodeValue();
				
				String obsPrestationCollecte = el.getElementsByTagName("OBS_PRESTATION_COLLECTE")
						.item(0).getFirstChild().getNodeValue();
				
				String aboutissant = el.getElementsByTagName("ABOUTISSANT")
						.item(0).getFirstChild().getNodeValue();
				
				String typeCollecte = el.getElementsByTagName("TYPE_COLLECTE")
						.item(0).getFirstChild().getNodeValue();
				
				String commune = el.getElementsByTagName("COMMUNE")
						.item(0).getFirstChild().getNodeValue();
				
				String prestationCollecte = el.getElementsByTagName("PRESTATION_COLLECTE")
						.item(0).getFirstChild().getNodeValue();
				
				String rivoli = el.getElementsByTagName("RIVOLI")
						.item(0).getFirstChild().getNodeValue();
				
				String libelle = el.getElementsByTagName("LIBELLE")
						.item(0).getFirstChild().getNodeValue();
				
				String tenant = el.getElementsByTagName("TENANT")
						.item(0).getFirstChild().getNodeValue();
				
				RubbishCollection rc = new RubbishCollection();
				rc.setRivoli(rivoli);
				rc.setLibelle(libelle);
				rc.setCommune(commune);
				rc.setMotDirecteur(motDirecteur);
				rc.setStatut(statut);
				rc.setTenant(tenant);
				rc.setAboutissant(aboutissant);
				rc.setPrestationCollecte(prestationCollecte);
				rc.setTypeCollecte(typeCollecte);
				rc.setObsPrestationCollecte(obsPrestationCollecte);
				rc.setBleuJourCollecte(bleuJourCollecte);
				rc.setJauneJourCollecte(jauneJourCollecte);
				rc.setObsJourCollecte(obsJourCollecte);
				rc.setQuartier(quartier);
				rc.setObsQuartier(obsQuartier);
				
				RubbishCollectionDAO.insert(rc);
			}
		}
		
	}

}
